package com.jiutong.meipenggang.views;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/**
 * @author Veken
 * @date on 2017/12/21 17:38
 * @describe 解决ScrollView嵌套ListView，高度显示不全，只显示一行数据的问题
 * （主要问题是，ScrollView在给ListView测量高度的时候，分配的MeasureSpec.UNSPECIFIED,导致高度不对）
 */

public class MyListView extends ListView {
    public MyListView(Context context) {
        this(context,null);
    }

    public MyListView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //重新测量ListView的高度，第一个参数是位移的值， heightMeasureSpec 32位的值，MAX_VALUE是一个30位的值，所以要右移两位。后面是重新赋予模式为AT_MOST
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
}
